package ar.com.seminario.model.enumerados;

/**
 * Describe las distintas necesidades de ingreso.
 * 
 * @author Pablo Lamas
 * 
 */
public enum NecesidadIngreso {

	/**
	 * Necesidad Ingreso Reemplazo.
	 */
	REEMPLAZO(1L, "RE", "Reemplazo"),

	/**
	 * Necesidad Ingreso Necesidad de Proyecto.
	 */
	NECESIDAD_DE_PROYECTO(2L, "NP", "Necesidad de Proyecto"),

	/**
	 * Necesidad Ingreso Necesidad organizacional.
	 */
	NECESIDAD_ORGANIZACIONAL(3L, "NO", "Necesidad organizacional"),

	/**
	 * Necesidad Ingreso Otros.
	 */
	OTROS(4L, "OT", "Otros");

	/**
	 * Id del tipo del registro.
	 */
	private Long id;

	/**
	 * Codigo del registro.
	 */
	private String code;

	/**
	 * Descripcion del registro.
	 */
	private String descripcion;

	/**
	 * Constructor con parametros.
	 * 
	 * @param id
	 *            Id del registro.
	 * @param code
	 *            Codigo del registro.
	 */
	private NecesidadIngreso(final Long id, final String code, final String descripcion) {

		this.id = id;
		this.code = code;
		this.descripcion = descripcion;
	}

	public Long getId() {
		return id;
	}

	public String getCode() {
		return code;
	}

	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * Obtiene el elemento correspondiente al identificador indicado.
	 * 
	 * @param id
	 *            Identificador cuyo elemento obtener.
	 * @return Elemento obtenido, o null si ninguno coincide con dicho
	 *         identificador.
	 */
	public static NecesidadIngreso fromId(final Long id) {

		for (NecesidadIngreso estadoPropuesta : NecesidadIngreso.values()) {
			if (estadoPropuesta.getId().equals(id)) {
				return (estadoPropuesta);
			}
		}

		return (null);
	}

	/**
	 * Obtiene el elemento correspondiente al c�digo indicado.
	 * 
	 * @param code
	 *            C�digo cuyo elemento obtener.
	 * @return Elemento obtenido, o null si ninguno coincide con dicho c�digo.
	 */
	public static NecesidadIngreso fromCode(final String code) {

		for (NecesidadIngreso estadoPropuesta : NecesidadIngreso.values()) {
			if (estadoPropuesta.getCode().equals(code)) {
				return (estadoPropuesta);
			}
		}

		return (null);
	}

}
